const gulp = require('gulp');
const babel = require('gulp-babel');
const sourcemaps = require('gulp-sourcemaps');
const less = require('gulp-less');//编译less
const autoprefixer = require('gulp-autoprefixer');//前缀补全
const minifycss = require('gulp-minify-css');//压缩css
const rename = require('gulp-rename');//重命名
browserSync = require('browser-sync').create();//server服务

// 移动文件（排除css和js文件  需要进一步处理）
gulp.task('files', function () {
    return gulp.src(['public/webApp/*', 'public/webApp/**/*', '!public/webApp/css/*', '!public/webApp/js/*.js'])
        .pipe(gulp.dest('build/webApp'))
});

// less编译压缩加前缀
gulp.task('less', function () {
    return gulp.src(['public/webApp/css/*.less','public/webApp/css/**/*.less'])
        .pipe(less())
        .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
        .pipe(gulp.dest('build/webApp/css'))
        .pipe(rename({suffix: '.min'}))
        .pipe(minifycss())
        .pipe(gulp.dest('build/webApp/css'))
});

// css压缩加前缀
gulp.task('css', function () {
    return gulp.src(['public/webApp/css/*.css','public/webApp/css/**/*.css'])
        .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
        .pipe(gulp.dest('build/webApp/css'))
        .pipe(rename({suffix: '.min'}))
        .pipe(minifycss())
        .pipe(gulp.dest('build/webApp/css'))
});

// 编译js
gulp.task('js', function () {
    return gulp.src(['public/webApp/js/*.js', 'public/webApp/js/**/*.js'])
        .pipe(sourcemaps.init())
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('build/webApp/js'));
});

// 移动文件
gulp.task('html',function () {
    return gulp.src(['public/webApp/templates/*.html','public/webApp/templates/**/*.html'])
        .pipe(gulp.dest('build/webApp/templates'))
});

//默认任务
gulp.task('default', ['files', 'less', 'css', 'js'], function () {

    //初始化browserSync
    browserSync.init({
        server: {
            baseDir: "./build/webApp"
        },
        port: 8081
    });

    //看守html
    gulp.watch('public/webApp/templates/**/*.html', ['html']);

    // 看守所有css,less档
    gulp.watch('public/webApp/css/**/*.less', ['less']);
    gulp.watch('public/webApp/css/**/*.css', ['css']);

    // 看守所有.js档
    gulp.watch('public/webApp/js/**/*.js', ['js']);

    //监听当build/webApp文件夹下任何文件发生变化，则自动刷新浏览器
    gulp.watch('./build/webApp/**', function () {
        console.log('reload');
        browserSync.reload();
    });
});
